<?php
/*用户控制层*/
namespace app\admin\controller;
use think\Controller;
use think\db;
//引入验证类
use app\admin\validate\User as UserValidate; 
class User extends Base
{
	public function lists(){
		//echo time();
		$db=db('user');
		//$res=$db->where('status',1)->select();
		//分页
		$num=3;
		$res=$db->where('status',1)->paginate($num);
		$page=$res->render();
		$this->assign('page',$page);

		$this->assign('res',$res);
		return $this->fetch();
	}

	public function edit(){
		$id=input('get.id/d');//强制转换
		$db=db('user');
		$data=$db->where('id',$id)->find();
		$this->assign('data',$data);
		$this->assign('id',$id);
		return $this->fetch();
	}

	//修改管理员信息
	public function update(){
		$data=input('post.');
		$id=input('post.id');
		$db=db('user');
		$res=$db->where('id',$id)->update($data);
		if($res){
			$this->success('修改管理员信息成功','User/lists');
		}else{
			$this->error('修改管理员信息失败');
		}
	}

	public function add(){
		return $this->fetch();
	}

	//添加管理员
	public function insert(){

		$db=db('user');
		$data=input('post.');

		//实例化验证类
		$val=new UserValidate();

		$request=request();
		if(!$val->check($data)){
			$this->error($val->getError());
			die();
		}
		//验证通过之后
		unset($data['repassword']);
		$salt=rand(1000,9999);
		$data['ip']=$request->ip();//获取ip，通过34行$request=request()获取;
		$data['create_time']=time();
		$data['salt']=$salt;//存密钥，登录时用
		$data['password']=md5($data['password'].$salt);
		$res=$db->insert($data);
		if($res){
			$this->success('管理员添加成功','User/lists');
		}else{
			$this->error('管理员添加失败');
		}
		//dump($data);

	}

	//删除管理员
	//假删，修改状态
	public function delete(){
		$id=input('get.id/d');//d强制转化为整形
		$db=db('user');
		$data=['status'=>0];
		$res=$db->where('id',$id)->update($data);
		if($res){
			$this->success('删除用户成功','User/lists');
		}else{
			$this->error('删除用户失败');
		}

	}

	//邮箱找回密码
	public function repwd(){
		$rand=rand(1000,9999);
		$id=input('get.id/d');
		$db=db('user');
		$user=$db->where('id',$id)->find();
		//dump($user['email']);die;
		$res=\phpmailer\Email::smtp_mail('欢迎使用phpemailer',$rand,$user['email']);
		$data=['repwd'=>$rand];
		if($res){
			$result=$db->where('id',$id)->update($data);
			session('repwduid',$id);//存id到session中，给修改密码做准备。不需要隐藏域传id
		}
		return $this->fetch();
	}

	//第1步，验证
	public function repwdone(){
		$db=db('user');
		$repwd=input('post.repwd/d');
		$res = $db->where('repwd',$repwd)->find();
		if($res){
			$this->success('验证码输入正确','User/repwdtwo');
		}else{
			$this->error('验证码输入错误');
		}
	}

	//第2步，
	public function repwdtwo(){
		return $this->fetch();
	}

	//第3步，修改密码
	public function repwdthree(){
		$data=input('post.');
		$db=db('user');
		$id=session('repwduid');
		$user = $db->where('id',$id)->find();
		//unset($data['repassword']);
		if($user){
			$password=md5($data['password'].$user['salt']);
			$userdata['password']=$password;
			$res=$db->where('id',$id)->update($userdata);
			if($res){
				$this->success('管理员密码修改成功','User/lists');
			}else{
				$this->error('管理员密码修改失败');
			}

		}/*else{
			$this->error('验证码输入错误');
		}*/
	}
}

 ?>